// const baseUrl = 'http://192.168.1.235:8088';
const baseUrl = 'https://ai-hairstyle-api-front.gzxztec.com'

export default function request({
  url,
  method,
  data,
  header = {},
  ignoreToken = false
}) {
  return new Promise((resolve, reject) => {
    let token = uni.getStorageSync('token');
    if (token !== undefined && token !== null && token !== '') {
      header['Authori-zation'] = token;
    }
    // #ifdef MP
    if (!ignoreToken && !token) {
      uni.navigateTo({
        url: '/pages/login/weChantLogin'
      });
      reject('未登录，跳转登录');
    }
    // #endif

    // #ifdef H5
    if (!ignoreToken && !token) {
      uni.navigateTo({
        url: '/pages/login/login'
      });
      reject('未登录，跳转登录');
    }
    // #endif
    uni.request({
      url: baseUrl + url,
      method: method,
      data: data,
      header: header,
      success: (res) => {
        if (res && res.data && res.data.code) {
          if (res.data.code === 200) {
            resolve(res.data);
          } else if (res.data.code === 401) {
            // 移除token
            uni.removeStorageSync('token')
            uni.showToast({
              title: '登录过期，跳转登录',
              icon: 'none'
            });
            reject('登录过期，跳转登录');
            // #ifdef MP
            uni.navigateTo({
              url: '/pages/login/weChantLogin'
            });
            // #endif

            // #ifdef H5
            uni.navigateTo({
              url: '/pages/login/login'
            });
            // #endif
          } else if (res.data.code === 403) {
            uni.showToast({
              title: '没有权限',
              icon: 'none'
            });
            reject('没有权限');
          } else if (res.data.code === 500) {
            uni.showToast({
              title: res.data.message,
              icon: 'none',
              duration: 5000
            });
            resolve(res.data);
          } else {
            uni.showToast({
              title: res.data.message || '服务器错误',
              icon: 'none',
              duration: 5000
            });
            reject(res.data.message || '服务器错误');
          }
        } else {
          uni.showToast({
            title: '服务器响应错误',
            icon: 'none'
          });
          reject('服务器响应错误');
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '请求失败，请检查网络状态',
          icon: 'error'
        });
      }
    });
  });
}